# _*_ coding: utf-8 _*_
# .@FileName:mathTools
# .@Data....:2025-02-23 : 22 : 01
# .@Aurhor..:LiuJingYu
"""
launch:
from __future__ import unicode_literals, print_function
import maya.cmds as mc
"""
import math

from typing import List, Tuple, Optional

def smoothstep(min_val: float, max_val: float, value: float) -> float:
    """
    平滑过渡函数，在[min_val, max_val]区间内生成平滑的0-1过渡值

    Args:
        min_val: 最小值阈值
        max_val: 最大值阈值
        value: 输入值

    Returns:
        标准化后的平滑过渡值
    """
    # 如果输入值小于等于最小值阈值，返回0.0
    if value <= min_val:
        return 0.0
    # 如果输入值大于等于最大值阈值，返回1.0
    if value >= max_val:
        return 1.0
    # 归一化输入值，将其映射到[0, 1]区间
    t = (value - min_val) / (max_val - min_val)
    # 计算三次插值，得到平滑过渡值
    return t * t * (3.0 - 2.0 * t)


def get_distance(start: Tuple[float, float, float],
                 end: Tuple[float, float, float]) -> float:
    """计算两个三维坐标点的欧氏距离（优化版）

    Args:
        start: 起始点坐标 (x, y, z)
        end: 结束点坐标 (x, y, z)

    Returns:
        两点之间的欧氏距离
    """
    return math.sqrt(sum((s - e) ** 2 for s, e in zip(start, end)))